package weaver.formmode.customjavacode.modeexpand.test.demo;

import com.alibaba.fastjson.JSONObject;
import com.customization.test.demo.service.WDetailsService;
import com.customization.test.demo.service.impl.WDetailsServiceImpl;
import com.customization.unionpay.market.util.FormDataUtils;
import com.engine.common.util.ServiceUtil;
import com.wbi.util.Util;
import weaver.conn.RecordSet;
import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew;
import weaver.hrm.User;
import weaver.integration.logging.Logger;
import weaver.integration.logging.LoggerFactory;
import weaver.soa.workflow.request.MainTableInfo;
import weaver.soa.workflow.request.Property;
import weaver.soa.workflow.request.RequestInfo;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author sjm
 * @description 清算资金明细导入相关action
 */
public class  WDetailsImport extends AbstractModeExpandJavaCodeNew {

    private static final Logger log = LoggerFactory.getLogger(WDetailsImport.class);

    private WDetailsService getService(User user) {
        return ServiceUtil.getService(WDetailsServiceImpl.class, user);
    }

    /**
     * 执行模块扩展动作
     *
     * @param param param包含(但不限于)以下数据
     *              user 当前用户
     *              importtype 导入方式(仅在批量导入的接口动作会传输) 1 追加，2覆盖,3更新，获取方式(int)param.get("importtype")
     *              导入链接中拼接的特殊参数(仅在批量导入的接口动作会传输)，比如a=1，可通过param.get("a")获取参数值
     *              页面链接拼接的参数，比如b=2,可以通过param.get("b")来获取参数
     * @return
     */
    public Map<String, String> doModeExpand(Map<String, Object> param) {
        Map<String, String> result = new HashMap<String, String>();
        try {
            User user = (User) param.get("user");
            int billid = -1;//数据id
            int modeid = -1;//模块id
            RequestInfo requestInfo = (RequestInfo) param.get("RequestInfo");
            if (requestInfo != null) {
                billid = Util.getIntValue(requestInfo.getRequestid());
                modeid = Util.getIntValue(requestInfo.getWorkflowid());
                MainTableInfo mainTableInfo = requestInfo.getMainTableInfo();
                Property[] property = mainTableInfo.getProperty();
                Map<String, Object> allFormData = FormDataUtils.getMainFormData(requestInfo);
                Map<String, String> mainMap = (Map<String, String>) allFormData.get("mainMap");

                String filename = Util.null2String(param.get("filename"));
                if (billid > 0 && modeid > 0) {
                    //------请在下面编写业务逻辑代码------

                    // 测试镜像
                    int formId = -301;
                    int formmodeId = 265;

                    // 获取主表表名
                    String maintablename = FormDataUtils.getTableName(formId);

                    RecordSet rst = new RecordSet();

                    // 根据当前信息使用id修改新建数据
                    String updateSql = "select * from " + maintablename + " where id = '" + billid+"' " ;
                    rst.executeQuery(updateSql);

                    List<JSONObject> list = new ArrayList<>();
                    while (rst.next()){
                        JSONObject json = new JSONObject();
                        json.put("id",rst.getString("id"));
                        list.add(json);
                    }


//                    //创建输入流
//                    InputStream stream = new FileInputStream(filename);
//                    //获取Excel文件对象
//                    Workbook rwb = WorkbookFactory.create(stream);
//
//                    try {
//                        for (Sheet sheet : rwb) {
//                            String sheetName = sheet.getSheetName();
//                            if ("主表".equals(sheetName)) {
//                                // 字段头
//                                String propValue = PropUtils.bbLog.getPropValue("marketSubject", "clearing_fund_summary_ledger_import_field");
////                                String propValueChange = new String(propValue.getBytes("ISO-8859-1"), "UTF-8");
//                                log.info("clearing_fund_summary_ledger_import_field:"+propValue);
//                                String[] values = propValue.split(",");
//                                Row rowTitle = sheet.getRow(0);
//
//                                Map<String,Integer> indexs = new HashMap<>();
//                                boolean going = true;
//
//                                for (int i = 0; i < values.length; i++) {
//                                    String value = values[i].split("-")[0];
//                                    String key = values[i].split("-")[1];
//                                    int columnIndex = ExcelUtils.findColumnIndex(rowTitle, value);
//                                    if (columnIndex > -1) {
//                                        indexs.put(key,columnIndex);
//                                    } else {
//                                        going = false;
//                                        break;
//                                    }
//                                }
//                                if(going) {
//                                    int lastRowNum = sheet.getLastRowNum()+1;
//                                    for (int i = 1; i < lastRowNum; i++) {
//                                        Row row = sheet.getRow(i);
//
//                                        String csr = null;
//                                        String xb = null;
//                                        String js = null;
//                                        String bm = null;
//                                        String csrq = null;
//
//
//                                        Integer csrIndex = indexs.get("csr");
//                                        if (csrIndex != null) {
//                                            Cell cell = row.getCell(csrIndex);
//                                            csr = ExcelUtils.getCellValue(cell);
//                                        }
//                                        // 下拉
//                                        Integer xbIndex = indexs.get("xb");
//                                        if (xbIndex != null) {
//                                            Cell cell = row.getCell(xbIndex);
//                                            xb = ExcelUtils.getCellValue(cell);
//                                            boolean isNumber = xb.matches("-?\\d+(\\.\\d+)?");
//                                            if(!isNumber) {
//                                                xb = FormDataUtils.getItemValue(formId, "xb", xb);
//                                                log.info("xb枚举值："+xb);
//                                            }
//                                        }
//                                        Integer jsIndex = indexs.get("js");
//                                        if (jsIndex != null) {
//                                            Cell cell = row.getCell(jsIndex);
//                                            js = ExcelUtils.getCellValue(cell);
//                                        }
//                                        Integer bmIndex = indexs.get("bm");
//                                        if (bmIndex != null) {
//                                            Cell cell = row.getCell(bmIndex);
//                                            bm = ExcelUtils.getCellValue(cell);
//                                        }
//                                        Integer csrqIndex = indexs.get("csrq");
//                                        if (csrqIndex != null) {
//                                            Cell cell = row.getCell(csrqIndex);
//                                            csrq = ExcelUtils.getCellValue(cell);
//                                        }
//                                        if (StrUtil.isNotBlank(csr) && StrUtil.isNotBlank(xb) && StrUtil.isNotBlank(js) && StrUtil.isNotBlank(bm) && StrUtil.isNotBlank(csrq)) {
//                                            getService(user).addOrUpdateInfo(formId,formmodeId,user,csr,xb,js,bm,csrq);
//                                        } else {
//                                            log.error("字段为空,请检查excel!");
//                                        }
//                                    }
//                                }else {
//                                    log.error("当前非主表sheet!");
//                                }
//                            } else {
//                                log.error("添加清算资金汇总台账字段缺失!");
//                            }
//                        }
//                    } catch (Exception e) {
//                        log.error( "添加清算资金汇总台账异常：" + e.getMessage());
//                        result.put("errmsg", "添加清算资金汇总台账异常：" + e.getMessage());
//                        result.put("flag", "false");
//                    } finally {
//                        rwb.close();
//                        stream.close();
//                    }
                }
            }
        } catch (Exception e) {
            log.error( "自定义扩展批量导入异常：" + e.getMessage());
            result.put("errmsg", "自定义出错信息");
            result.put("flag", "false");
        }
        return result;
    }

}
